﻿using Onshi.POS.AccesoDatos.Interfaces;
using Onshi.POS.Modelo.Entidades;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace Onshi.POS.Repositorios
{
    public class RepositorioCamposPersonalizadosProveedores : RepositorioEntidad<CampoPersonalizadoProveedor, Int32, IServicioDatosCamposPersonalizadosProveedores>
    {
        #region Constructores

        public RepositorioCamposPersonalizadosProveedores()
            : base()
        {
        }

        #endregion

        #region Metodos

        protected override CampoPersonalizadoProveedor FilaAEntidad(DataRow fila)
        {
            var CampoPersonalizadoProveedor = new CampoPersonalizadoProveedor();
            CampoPersonalizadoProveedor.Id = (Int32)fila["IdCampoPersonalizadoProveedor"];
            CampoPersonalizadoProveedor.Nombre = (String)fila["Nombre"];
            CampoPersonalizadoProveedor.Observaciones = (String)fila["Observaciones"];
            return CampoPersonalizadoProveedor;
        }

        public override CampoPersonalizadoProveedor DevolverPorId(Int32 id)
        {
            var campoPersonalizadoProveedor = entidades.Where(x => x.Id == id).FirstOrDefault();
            if (campoPersonalizadoProveedor == null)
                using (var ds = servicioDatos.CamposPersonalizadosProveedores_DevolverPorId(id))
                    if (ds.Tables[0].Rows.Count != 0)
                    {
                        campoPersonalizadoProveedor = FilaAEntidad(ds.Tables[0].Rows[0]);
                        entidades.Add(campoPersonalizadoProveedor);
                    }
            return campoPersonalizadoProveedor;
        }

        public void Insertar(CampoPersonalizadoProveedor campoPersonalizadoProveedor)
        {
            campoPersonalizadoProveedor.Id = servicioDatos.CamposPersonalizadosProveedores_Insertar(campoPersonalizadoProveedor.Nombre, campoPersonalizadoProveedor.Observaciones);
        }

        public void Modificar(CampoPersonalizadoProveedor campoPersonalizadoProveedor)
        {
            servicioDatos.CamposPersonalizadosProveedores_Modificar(campoPersonalizadoProveedor.Id, campoPersonalizadoProveedor.Nombre, campoPersonalizadoProveedor.Observaciones);
        }

        public void Eliminar(CampoPersonalizadoProveedor campoPersonalizadoProveedor)
        {
            servicioDatos.CamposPersonalizadosProveedores_Eliminar(campoPersonalizadoProveedor.Id);
            campoPersonalizadoProveedor = null;
        }

        public List<CampoPersonalizadoProveedor> DevolverTodos()
        {
            using (var ds = servicioDatos.CamposPersonalizadosProveedores_DevolverTodos())
                entidades = TablaALista(ds.Tables[0]);
            return entidades;
        }

        #endregion
    }
}